<?php
/**
 *
 * 分页通用类主要实现输出和换页处理
 * @author kwor
 *
 */
class pageination{

	/**
	 *
	 * 获取总页数
	 * @param  $pagesiz  //每页数量
	 * @param  $page     //当前页
	 * @param  $amount    //总页数
	 */
	function get_countpage($page,$amount,$pagesiz=10) {
		$countpage=ceil($amount/$pagesiz);
		if($page>$countpage || $page<=0)
		{
			$page=1;
		}
		return $countpage;
	}

	/**
	 *
	 * 输出翻页标签
	 * @param  $pagesiz  //每页数量
	 * @param  $page     //当前页
	 * @param  $amount    //总页数
	 * @param  $style     //样式(=0为（上一页|下一页 的形式），=1为（<< < 1 2 3 > >>的形式）,=2为（=0的形式加上页码下拉菜单）)
	 * @param  $nopageisshow //无数据的的情况下是否显示上一页下一页的标签（默认不显示）
	 * @param  $pagefile  //所在php文件,直接为空一般指到本页默认为?连接符，在指定页面时也要加上?或&符号
	 * @param  $pagelen   //=1页就是第二种形式的数值按键显示数量，默认为6个
	 */
	function pageination_lab($page,$amount,$pagesiz=10,$style=2,$pagefile='?',$pagelen=6,$nopageisshow=false) {

		if($page==null||$page==""||$page<1||!isset($page)){
			$page=1;
		}else {
			$page=intval($page);
		}
		$amount=intval($amount);
		$pageination='';
		$countpage=$this->get_countpage($page,$amount,$pagesiz);
		if($nopageisshow==false){
		 if($amount<=0)
		 {
		 	exit();
		  }
		}
		
		$pageination.="<div>";
		if($style==0){
			//在第一页的情况
			if($page<=1)
			{
				$pageination.='首页&nbsp;|';
				$pageination.='&nbsp;上一页';
			}else{
				$pageination.='<a href="'.$pagefile.'page=1">首页</a>&nbsp;|';
				$pageination.='&nbsp;<a href="'.$pagefile.'page='.($page-1).'">上一页</a>|';
			}
			//在最后一页的情况
			if($page>=$countpage){
				$pageination.='下一页&nbsp;|';
				$pageination.='&nbsp;尾页';
			}else {
				$pageination.='<a href="'.$pagefile.'page='.($page+1).'">下一页</a>&nbsp;|';
				$pageination.='&nbsp;<a href="'.$pagefile.'page='.$countpage.'">尾页</a>|';
			}
		}else if($style==1)
		{
			//处理特殊情况
			if($page<1) $page = 1;
			if($page>$countpage)
			{
				$page = $countpage;
			}

			//页码范围计算
			$init = 1;//起始页码数
			$max = $countpage;//结束页码数
			$pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
			$pageoffset = ($pagelen-1)/2;//页码个数左右偏移量
			// $pageination.="<span>$page/$pages</span>";
			if($page<=1){
				//$pageination.="首页&nbsp;";
				//$pageination.="末页";

			}else
			{
				$pageination.="<span style='padding-left:3px;background:#99CCCC; padding-right:3px; border:#666666 solid 1px'><a href='".$pagefile."page=1'>首页</a></span>&nbsp;";//第一页
				$pageination.="<span style='padding-left:3px;background:#99CCCC; padding-right:3px; border:#666666 solid 1px;margin-right:3px'><a href='".$pagefile."page=".($page-1)."'>上一页</a></span>";//上一页
			}

			//分页数大于页码个数时可以偏移
			if($countpage>$pagelen){
				//如果当前页小于等于左偏移
				if($page<=$pageoffset){
					$init=1;
					$max = $pagelen;
				}else{//如果当前页大于左偏移
					//如果当前页码右偏移超出最大分页数
					if($page+$pageoffset>=$countpage+1){
						$init = $countpage-$pagelen+1;
					}else{
						//左右偏移都存在时的计算
						$init = $page-$pageoffset;
						$max = $page+$pageoffset;
					}
				}
			}

			for($i=$init;$i<=$max;$i++){
				if($i==$page){
					$pageination.='<span style="padding-left:3px; padding-right:3px; border:#666666 solid 1px;margin-right:3px">'.$i.'</span>';
				} else {
					$pageination.="<span style='padding-left:3px;background:#99CCCC; padding-right:3px; border:#666666 solid 1px'><a href='".$pagefile."page={$i}'>".$i."</a></span>&nbsp;";
				}
			}
			if($page>=$countpage){
				//$pageination.="下一页&nbsp;";
				//$pageination.="末页";
			}else {
				$pageination.="<span style='padding-left:3px;background:#99CCCC; padding-right:3px; border:#666666 solid 1px'><a href='".$pagefile."page=".($page+1)."'>下一页</a></span>&nbsp;";//下一页
				$pageination.="<span style='padding-left:3px;background:#99CCCC; padding-right:3px; border:#666666 solid 1px'><a href='".$pagefile."page=".$countpage."'>末页</a></span>";//最后一页
			}
		}else if($style==2) {
			//在第一页的情况
			if($page<=1)
			{
				$pageination.='<label style="color:#CCCCCC">首页</label>&nbsp;|';
				$pageination.='&nbsp;<label style="color:#CCCCCC">上一页</label>|';
			}else{
				$pageination.='<a href="'.$pagefile.'page=1">首页</a>&nbsp;|';
				$pageination.='&nbsp;<a href="'.$pagefile.'page='.($page-1).'">上一页</a>|';
			}
			//在最后一页的情况
			if($page>=$countpage){
				$pageination.='<label style="color:#CCCCCC">下一页</label>&nbsp;|';
				$pageination.='<label style="color:#CCCCCC">&nbsp;尾页</label>';
			}else {
				$pageination.='<a href="'.$pagefile.'page='.($page+1).'">下一页</a>&nbsp;|';
				$pageination.='&nbsp;<a href="'.$pagefile.'page='.$countpage.'">尾页</a>&nbsp;';
			}
				
			if($countpage>0){
				$pageination.='<select name="changepage" ';
				$pageination.= 'onchange="javascript:location.href=\''.$pagefile.'page=\'+this.value " >';
				
				for ($j = 0; $j < $countpage; $j++) {
					if(($j+1)==$page){
						$pageination.="<option value='".($j+1)."' selected>".($j+1)."</option>";
					}else{
						$pageination.="<option value='".($j+1)."'>".($j+1)."</option>";
					}
				}
				$pageination.="</select>";
			}		
		}
		$pageination.="<div>";

		return array('pagelab'=>$pageination,'start'=>(($page-1)*$pagesiz),'step'=>$pagesiz);
			
	}

}